/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.prsistema.DAO;

import com.prsistema.utilitarias.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

/**
 *
 * @author Leonardo
 */
public class DAOUsuario {
    
    private Connection conector;

    public DAOUsuario(Connection conector) {
        this.conector = conector;
    }
    
    public boolean insert(Usuario user){
        boolean retorno = false;
        PreparedStatement pstm = null;
        
        try{
            final String sql = "insert into usuario (user_login, user_senha, user_nome, user_lembrarLogin) values (?,?,?,?)";
            pstm = conector.prepareStatement(sql);
            
            pstm.setString(1, user.getLogin());
            pstm.setString(2, user.getSenha());
            pstm.setString(3, user.getNome());
            pstm.setBoolean(4, user.isLembrarLogin());
            
            pstm.executeUpdate();
            pstm.close();
            
            retorno = true;
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro ao salvar no Banco de Dados: " + ex);
            retorno = false;
        }finally{
            return retorno;
        }
    }
    
    public Usuario select(Usuario user){
        
        PreparedStatement pstm = null;
        Usuario usuario = new Usuario();
        
        try{
            final String sql = "select * from usuario where user_login=?";
            pstm = conector.prepareStatement(sql);
            pstm.setString(1, user.getLogin());            
            ResultSet resultado = pstm.executeQuery();
            
            if(resultado.next()){
                usuario.setLogin(resultado.getString("user_login"));
                usuario.setSenha(resultado.getString("user_senha"));
                usuario.setNome(resultado.getString("user_nome"));
                usuario.setLembrarLogin(resultado.getBoolean("user_lembrarLogin"));
            }else{
                usuario = null;
            }
            pstm.close();
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro com Banco de Dados: " + ex);
            usuario = null;
        }finally{
            return usuario;
        }
    }
    
    public boolean updateLembrar(String login, boolean lembrar){
        boolean retorno = false;
        PreparedStatement pstm = null;
        
        try{
            final String sql = "update usuario set user_lembrarLogin = false where user_lembrarLogin = true";
            pstm = conector.prepareStatement(sql);
            pstm.executeUpdate();
            
            pstm = null;
            
            final String sql2 = "update usuario set user_lembrarLogin = (?) where user_login = (?)";
            pstm = conector.prepareStatement(sql2);
            
            pstm.setBoolean(1, lembrar);
            pstm.setString(2, login);
            
            pstm.executeUpdate();
            pstm.close();
            
            retorno = true;
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro ao atualizar o Banco de Dados: " + ex);
            retorno = false;
        }finally{
            return retorno;
        }
    }
    
    public Usuario lembrarLogin(){
        Usuario usuario = new Usuario();
        PreparedStatement pstm = null;
        
        try{
            final String sql = "select * from usuario where user_lembrarLogin = true";
            pstm = conector.prepareStatement(sql);
            ResultSet resultado = pstm.executeQuery();
            
            if(resultado.next()){
                usuario.setLogin(resultado.getString("user_login"));
                usuario.setSenha(resultado.getString("user_senha"));
                usuario.setNome(resultado.getString("user_nome"));
                usuario.setLembrarLogin(resultado.getBoolean("user_lembrarLogin"));
            }else{
                usuario = null;
            }            
        }catch(Exception ex){
            JOptionPane.showMessageDialog(null, "Erro com Banco de Dados: " + ex);
            usuario = null;
        }finally{
            return usuario;
        }
    }
}
